#pragma once

class CoinManager;

class CoinInterface {
public:

   // returns if the Coin can be mined 
   // for example Litecoins can be mined
   // Euros can't be mined 
   bool isMinable() const = 0; 

   // return coin code ( BTC, LTC, USD, EUR and etc. )
   virtual char * getCode() const = 0; 

   // return the coin ID number in our system
   virtual int getID() const = 0; 

   // returns some description about that coin, used for display
   // purposes
   virtual char * getDescription() const = 0;

   // returns the minimum amount that coin can have
   // for examplei,for BitCoin it's 0.00000001
   virtual double * getMinAmount() const = 0; 

   friend class CoinManager;
protected:
   // sets the ID
   virtual bool setID() = 0;

};
